// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import ListClass from '@api/base/model/DashboardListQueryReq'
import BaseClass from '@api/base/model/DashboardDto'
import Dashboard from '@admin/router/System/Dashboard'
import API from './API'

const project = process.env.VUE_APP_PROJECT

const DASHBOARD = Object.keys(Dashboard).reduce((array, key) => {
  const { menu = {}, meta = {} } = Dashboard[key]
  if (meta.dashboard) array.push([meta.dashboard, menu.title])
  return array
}, [])

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API,

  /**
   * 映射
   */
  MAP: {
    WORD: '图表', // 词语
    ONE: '字段', // 信息
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 仪表盘
     */
    DASHBOARD,

    /**
     * 类型
     */
    TYPE: [
      ['pie', '饼状图'],
      ['line', '曲线图'],
      ['column', '柱状图'],
      ['bar', '条形图'],
    ],
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: CORE.initObj(ListClass, {
    project,
  }),

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setOne() 重置时使用
   * 4. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    project,
    fieldDict: [], // 字段字典
  }),
}
